package com.abc.xxx.service;

import com.abc.xxx.model.AccessibleView;
import com.abc.xxx.model.View;
import com.abc.xxx.model.vo.AccessiblePage;
import com.abc.xxx.model.vo.PermissionAssignment;
import com.abc.xxx.util.Result;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

public interface AccessibleViewService extends IService<AccessibleView> {

    /**
     * 权限管理-功能权限-回显角色已分配的菜单、按钮
     * 根据角色代码查询权限（页面、按钮）
     *
     * @param roleId
     * @return t_accessible_view.view_code
     */
    List<String> findRoleAccessibleViews(Integer roleId);

    /**
     * 转换成 页面权限 - 按钮权限 的树状结构
     *
     * @param views
     * @return
     */
    List<AccessiblePage> convertToPageButtonTree(List<View> views);

    /**
     * 根据指定的角色标识码、权限类型，在中间表r_role_permission删除关联关系
     *
     * @param roleCode       角色标识码
     * @param permissionType 权限类型
     * @return
     */
    boolean deleteRelation(String roleCode, Integer permissionType);

    /**
     * 权限管理-功能权限-保存
     * 角色分配菜单、按钮权限
     * @param roleId
     * @param accessibleViews
     * @return
     */
    void assignPageAndButtonPermissions(Integer roleId, List<AccessibleView> accessibleViews);

    /**
     * 角色按钮页面权限
     *
     * @param oper
     * @param form
     * @return
     */
    Result assignButtonPermissions(String oper, PermissionAssignment form);
}
